package demo2;

public class Test {
    public static void main(String[] args) {
        func1(new Frog("妙妙蛙"));
        testRun(new Frog("妙妙蛙"));
        testSwim(new Frog("妙妙蛙"));
    }
    /**
     * 实现ISwim接口,调用游泳的特性
     * @param iSwim
     * 动态绑定,向上转型
     */
    public static void testSwim(ISwim iSwim) {
        iSwim.swim();
    }

    public static void main4(String[] args) {
        testSwim(new Dog("小黑"));
        testSwim(new Duck("小唐"));
    }
    /**
     * 实现IRun接口,调用跑的特性
     * @param iRun
     * 动态绑定,向上转型
     */
    public static void testRun(IRun iRun) {
        iRun.run();
    }

    public static void main3(String[] args) {
        testRun(new Bird("布谷"));
        testRun(new Dog("小黑"));
        testRun(new Duck("小唐"));
        testRun(new Roboot("机器人6号"));
    }
    /**
     * 实现IFly接口,调用飞的特性
     * @param iFly
     * 动态绑定,向上转型
     */
    public static void testFly(IFly iFly) {
        iFly.fly();
    }
    public static void main2(String[] args) {
        testFly(new Bird("布谷"));
        testFly(new Duck("小唐"));
    }
    /**
     * 抽象类,实现多态
     * @param args
     * 动态绑定,向上转型
    */
    public static void func1(Animal animal) {
        animal.eat();
    }
    public static void main1(String[] args) {
        func1(new Bird("布谷"));
        func1(new Dog("小黑"));
        func1(new Duck("小唐"));
        func1(new Roboot("机器人6号"));
    }
}
